package ar.com.android.alco.providers;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import ar.com.android.alco.dbHelpers.SQLALCOHelper;
import ar.com.android.alco.entities.DatosUsuario;

public class DatosUsuarioProvider {
	
	private static final String DB_COLUMN_0_NAME = "idDatosUsuario";
	private static final String DB_COLUMN_1_NAME = "nombreApellido";
	private static final String DB_COLUMN_2_NAME = "sexo";
	private static final String DB_COLUMN_3_NAME = "fase";
	private static final String DB_COLUMN_4_NAME = "pesoInicio";
	private static final String DB_COLUMN_5_NAME = "pesoPosible";
	private static final String DB_COLUMN_6_NAME = "altura";
	private static final String DB_COLUMN_7_NAME = "IMC";
	private static final String DB_COLUMN_8_NAME = "creditosInicio";
	private static final String DB_COLUMN_9_NAME = "email";
	private static final String DB_COLUMN_10_NAME = "idUsuarioALCO";

	private SQLiteDatabase database;
	private SQLALCOHelper dbHelper;
	private String[] allColumns = {DB_COLUMN_0_NAME, DB_COLUMN_1_NAME, DB_COLUMN_2_NAME, DB_COLUMN_3_NAME, DB_COLUMN_4_NAME, DB_COLUMN_5_NAME, DB_COLUMN_6_NAME, DB_COLUMN_7_NAME, DB_COLUMN_8_NAME, DB_COLUMN_9_NAME, DB_COLUMN_10_NAME};
	
	public DatosUsuarioProvider(Context context) {
		dbHelper = SQLALCOHelper.getHelper(context);
		database = dbHelper.getWritableDatabase();
	}
		
	public long insertDatosUsuario(DatosUsuario datosUsuario)
	{
		ContentValues contentValues = new ContentValues();
		contentValues.put(DB_COLUMN_0_NAME, datosUsuario.getIdDatosUsuario());
		contentValues.put(DB_COLUMN_1_NAME, datosUsuario.getNombreApellido());
		contentValues.put(DB_COLUMN_2_NAME, datosUsuario.getSexo());
		contentValues.put(DB_COLUMN_3_NAME, datosUsuario.getFase());
		contentValues.put(DB_COLUMN_4_NAME, datosUsuario.getPesoInicio());
		contentValues.put(DB_COLUMN_5_NAME, datosUsuario.getPesoPosible());
		contentValues.put(DB_COLUMN_6_NAME, datosUsuario.getAltura());
		contentValues.put(DB_COLUMN_7_NAME, datosUsuario.getIMC());
		contentValues.put(DB_COLUMN_8_NAME, datosUsuario.getCreditosInicio());
		contentValues.put(DB_COLUMN_9_NAME, datosUsuario.getEmail());
		contentValues.put(DB_COLUMN_10_NAME, datosUsuario.getIdUsuarioALCO());
		
		long insertId = database.insert(SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, null, contentValues);
		return insertId;
	}
	
	public boolean removeDatosUsuario(Integer idDatosUsuario)
	{
		int result = database.delete(SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, DB_COLUMN_0_NAME + " = " + idDatosUsuario, null);
				
		if(result > 0)            
			return true;        
		else            
			return false;
	}
	
	public boolean removeDatosUsuario()
	{
		int result = database.delete(SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, null, null);
				
		if(result > 0)            
			return true;        
		else            
			return false;
	}
		
	public long updateDatosUsuario(DatosUsuario datosUsuario)
	{
		ContentValues contentValues = new ContentValues();
		contentValues.put(DB_COLUMN_1_NAME, datosUsuario.getNombreApellido());
		contentValues.put(DB_COLUMN_2_NAME, datosUsuario.getSexo());
		contentValues.put(DB_COLUMN_3_NAME, datosUsuario.getFase());
		contentValues.put(DB_COLUMN_4_NAME, datosUsuario.getPesoInicio());
		contentValues.put(DB_COLUMN_5_NAME, datosUsuario.getPesoPosible());
		contentValues.put(DB_COLUMN_6_NAME, datosUsuario.getAltura());
		contentValues.put(DB_COLUMN_7_NAME, datosUsuario.getIMC());
		contentValues.put(DB_COLUMN_8_NAME, datosUsuario.getCreditosInicio());
		contentValues.put(DB_COLUMN_9_NAME, datosUsuario.getEmail());
		contentValues.put(DB_COLUMN_10_NAME, datosUsuario.getIdUsuarioALCO());
		
		return database.update(SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, contentValues, DB_COLUMN_0_NAME + " = " + datosUsuario.getIdDatosUsuario(), null);
	}
	
	public DatosUsuario getDatosUsuario(Integer idDatosUsuario)
	{
		try
		{
			Cursor cursor = database.query(SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, allColumns, DB_COLUMN_0_NAME + " = " + idDatosUsuario, null, null, null, null);
			cursor.moveToFirst();
			
			DatosUsuario datosUsuario = new DatosUsuario();
			datosUsuario.setIdDatosUsuario(cursor.getInt(0));
			datosUsuario.setNombreApellido(cursor.getString(1));
			datosUsuario.setSexo(cursor.getString(2));
			datosUsuario.setFase(cursor.getString(3));
			datosUsuario.setPesoInicio(cursor.getDouble(4));
			datosUsuario.setPesoPosible(cursor.getDouble(5));
			datosUsuario.setAltura(cursor.getDouble(6));
			datosUsuario.setIMC(cursor.getDouble(7));
			datosUsuario.setCreditosInicio(cursor.getDouble(8));
			datosUsuario.setEmail(cursor.getString(9));
			datosUsuario.setIdUsuarioALCO(cursor.getInt(10));

			cursor.close();
			return datosUsuario;
	
		}
		catch (Exception e) {
			return null;
		}		
	}
	
	public Boolean getTableEmpty() {
		Cursor cur = database.rawQuery("SELECT COUNT(*) FROM " + SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, null);
		if (cur != null) {
		    cur.moveToFirst();
		    if (cur.getInt (0) == 0)
		        return Boolean.TRUE;
		    else
		    	return Boolean.FALSE;
		}
		else
			return Boolean.TRUE;
			
	}
	
	public List<DatosUsuario> getDatosUsuario() {
		List<DatosUsuario> lstDatosUsuario = new ArrayList<DatosUsuario>();
		
		Cursor cursor = database.query(SQLALCOHelper.DB_DATOS_USUARIO_TABLE_NAME, allColumns, null, null, null, null, null);
		cursor.moveToFirst();
		
		while (!cursor.isAfterLast()) {
			DatosUsuario datosUsuario = new DatosUsuario();
			datosUsuario.setIdDatosUsuario(cursor.getInt(0));
			datosUsuario.setNombreApellido(cursor.getString(1));
			datosUsuario.setSexo(cursor.getString(2));
			datosUsuario.setFase(cursor.getString(3));
			datosUsuario.setPesoInicio(cursor.getDouble(4));
			datosUsuario.setPesoPosible(cursor.getDouble(5));
			datosUsuario.setAltura(cursor.getDouble(6));
			datosUsuario.setIMC(cursor.getDouble(7));
			datosUsuario.setCreditosInicio(cursor.getDouble(8));
			datosUsuario.setEmail(cursor.getString(9));
			datosUsuario.setIdUsuarioALCO(cursor.getInt(10));
			
			lstDatosUsuario.add(datosUsuario);
			cursor.moveToNext();
		}
		cursor.close();
		return lstDatosUsuario;
	}
}
